#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_mainwindow.h"

#include "qstringlist.h"

class QStringListModel;

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindowClass; };
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindowClass *ui;

private:
    QStringList string_list;//保存字符串列表数据
    QStringListModel* model_s_l;//操作数据的模型

//相关信号的槽函数
private slots:
    /**
     * @brief 恢复列表
    */
    void on_pushButton_InitList_clicked();

    /**
     * @brief 清除列表
    */
    void on_pushButton_ListClear_clicked();

    /**
     * @brief 是否允许编辑
     * @param state 
    */
    void on_checkBox_Editable_stateChanged(int state);

    /**
     * @brief 添加项
    */
    void on_pushButton_ListAppend_clicked();

    /**
     * @brief 插入项
    */
    void on_pushButton_ListInsert_clicked();

    /**
     * @brief 上移
    */
    void on_pushButton_ListMoveUp_clicked();

    /**
     * @brief 下移
    */
    void on_pushButton_ListMoveDown_clicked();

    /**
     * @brief 排序
     * @param checked 
    */
    void on_pushButton_ListSort_clicked(bool checked);

    /**
     * @brief 清空文本
    */
    void on_pushButton_TextClear_clicked();

    /**
     * @brief 显示字符串
    */
    void on_pushButton_TextImport_clicked();

    /**
     * @brief 点击列表窗口
     * @param index 点击的索引
    */
    void on_listView_clicked(const QModelIndex& index);
};
